package com.bravo.rxlib;

/**
 * Created by bravo.lee on 2017/10/8.
 */

public class OnSubscriableLift<T, R> implements OnSubscriable<R> {

    private OnSubscriable<T> parent;
    private Operator<? extends T, ? super R> operator;

    /**
     * @param parent   这是第一次调用onCreate创建的OnObservable
     * @param operator 持有转换对象Func的二级Func  --> OperatorMap。
     */
    protected OnSubscriableLift(OnSubscriable<T> parent, Operator<? extends T, ? super R> operator) {
        this.parent = parent;
        this.operator = operator;
    }

    /**
     * @param subscriable MainActivity 调用map方法后，再调用subscriable()方法时，new 的内部类 Subscriable。
     */
    @Override
    public void call(Subscriable subscriable) {
        // 此处的Call 调用的是OperatorMap中的call()。
        // call -> MapSubscriable 的实例对象。
        Subscriable call = operator.call(subscriable);
        //调用MainActivity 中create时 创建的内部类OnSubscriable 的 call() 方法  params ->> MapSubscriable 的实例对象。
        parent.call(call);
    }
}
